
امروزه نگهداری بانک های اطلاعاتی مختلف، یکی از عمده ترین کاربردهای سرویس دهنده های موجود بر روی شبکه ها می باشد. بانک های اطلاعاتی اختصاصی زیادی بر روی دبیان گنو/ لینوکس قابل استفاده هستند، ولی دو سیستم سرویس دهنده بانک اطلاعاتی آزاد و بازمتن که معمولا به همراه توزیع های رایج گنو/ لینوکس ارائه می شوند، عبارتند از بانک های اطلاعاتی MySQL و PostgreSQL .
سرویس دهنده بانک اطلاعاتی PostgreSQL سرویس دهنده ای با قابلیت های فنی بسیار بالاست که می تواند با سرویس دهنده های اختصاصی مانند Oracle رقابت کند. سرویس دهنده MySQL یک سرویس دهنده سبکتر و با سرعت بسیار بالاست که امروزه در سطوح گسترده ای به عنوان سرویس دهنده نرم افزارهای تحت وب و سایت های وب بکار گرفته می شود. در این مقاله، ما به سرویس دهنده بانک اطلاعاتی MySQL بر روی توزیع دبیان گنو/لینوکس خواهیم پرداخت. سایت رسمی MySQL در آدرس http://www.mysql.org قرار دارد که در آن می توانید به تعداد زیادی مستندات راهنما به همراه یک انجمن فعال کاربران دسترسی داشته باشید.
نصب سرویس دهنده MySQL
نسخه پیش گزیده سرویس دهنده MySQL که بر روی دبیان گنو/ لینوکس ۳.۱ موجود است، نسخه ۴ می باشد که پایدار بوده و بسیاری از نرم افزارهای کاربردی با آن سازگاری دارند. نسخه جدیدتر این سرویس دهنده که نسخه ۴.۱ می باشد نیز به همراه دبیان گنو/ لینوکس ۳.۱ ارائه شده که در صورت نیاز می توانید از آن استفاده کنید. نصب سرویس دهنده بانک اطلاعاتی MySQL بسیار آسان می باشد. کافی است دستور apt-get install mysql-server را وارد نمایید. در هنگام نصب، هشداری در مورد کلمات عبور نمایش داده شده و سوالاتی در مورد اجرای خودکار سرویس دهنده در هنگام بوت سیستم و حذف بانک های اطلاعاتی قدیمی موجود بر روی سیستم پرسیده خواهد شد.
# apt-get install mysql-server
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed :
mysql-server
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded .
Need to get 0B/3641kB of archives .
After unpacking 8806kB of additional disk space will be used .
Preconfiguring packages ...
Selecting previously deselected package mysql-server .
(Reading database ... 130011 files and directories currently installed . )
Unpacking mysql-server (from .../mysql-server_4.0.23-4_i386.deb) ...
Setting up mysql-server (4.0.23-4) ...
Starting MySQL database server: mysqld .
Checking for crashed MySQL tables in the background .
برای نصب نسخه ۴.۱ نیز می توانید از دستور apt-get install mysql-server4.1 استفاده نمایید. البته توجه داشته باشید که در یک زمان تنها یکی از نسخه های ۴ یا ۴.۱ را می توانید بر روی سرویس دهنده خود داشته باشید.
پیکربندی و مدیریت سرویس دهنده MySQL
بسته دبیان سرویس دهنده MySQL حاوی بسیاری از تنظیمات لازم می باشد. فایل پیکربندی اصلی سرویس دهنده MySQL در مسیر etc/mysql/my.cnf / قرار دارد و در آن تنظیماتی از قبیل شماره درگاه، نام کاربری که سرویس دهنده با استفاده از آن اجرا می شود، مسیر قرار گیری فایل های مربوط به بانک های اطلاعاتی، فایل های ثبت رخداد و غیره می باشد. بسته MySQL دبیان طوری تنظیم شده است که پس از نصب سرویس دهنده، امکان اتصال به درگاه آن از خارج از سیستم سرویس دهنده امکان پذیر نخواهد بود. این گزینه در امنیت کلی سرویس دهنده بسیار موثر می باشد. نام کاربر و گروهی که هنگام نصب بسته دبیان سرویس دهنده MySQL بر روی سیستم ساخته می شود است.
هنگامی که سرویس دهنده MySQL نصب می شود، بطور پیش گزیده، هیچ کلمه عبوری برای کاربر ریشه که مدیر سرویس دهنده می باشد، در نظر گرفته نشده است. به عنوان مدیر سرویس دهنده، نخستین و تنها تنظیم ضروری که باید بر روی سرویس دهنده MySQL انجام دهید، ایجاد یک کلمه عبور برای کاربر ریشه می باشد. به این منظور، باید با استفاده از کنسول سرویس دهنده، به آن وارد شوید. از این پس نیز برای انجام تمامی کارها و امور مدیریتی خود بر روی سرویس دهنده مانند ایجاد و مدیریت بانک های اطلاعاتی، ایجاد کاربران جدید، تنظیم مجوزهای دسترسی و غیره از این کنسول استفاده خواهید کرد که جلوتر به آنها خواهیم پرداخت. برای ورود به کنسول سرویس گیرنده MySQL ، دستور زیر را وارد کنید:
# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or g .
Your MySQL connection id is 823 to server version: 4.0.23_Debian-4-log
Type 'help;' or 'h' for help. Type 'c' to clear the buffer .
Mysql>
پس از تایپ دستور، همانطور که در کد نمونه بالا مشاهده می کنید، اعلان فرمان سرویس دهنده MySQL به نمایش در خواهد آمد. گزینه u - در دستور بالا نمایانگر نام کاربری است. در دستور بالا با استفاده از کاربر ریشه وارد سرویس دهنده شده ایم. همانطور که مشاهده می کنید، هیچ کلمه عبوری از ما در خواست نشده است. نحوه استفاده از این دستور به شکل زیر می باشد:
# mysql [OPTIONS] [database]
گزینه های مهم قابل استفاده با این دستور عبارتند از گزینه u - که در بالا شرح داده شد و نمایانگر نام کاربری است که مایل هستید با استفاده از آن به سرویس دهنده متصل شوید، گزینه p - که برای ارسال کلمه عبور و یا نمایش اعلان درخواست کلمه عبور بر روی سرویس دهنده به کار می رود. پس ا زاین دو گزینه نیز می توانید نام بانک اطلاعاتی را که مایل هستید بر روی آن کار کنید را وارد کنید.
در نخستین قدم، برای اینکه کلمه عبور ریشه را بر روی سرویس دهنده تنظیم کنیم، در کنسول MySQL باید دستورات زیر را وارد کنیم:
# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or g .
Your MySQL connection id is 9 to server version: 4.0.23_Debian-4-log
Type 'help;' or 'h' for help. Type 'c' to clear the buffer .
mysql> grant all privileges on *.* to root@localhost identified by 'password ';
Query OK, 0 rows affected (0.19 sec)
Mysql>
در دستور بالا به سرویس دهنده می گوییم که تمامی مجوزهای دسترسی را به تمامی بانک های اطلاعاتی، به کاربر root که از ماشین محلی به سیستم متصل می شود و دارای کلمه عبور password است، اعطاء کن. توجه داشته باشید که بجای password باید کلمه عبور مورد نظرتان را برای کاربر ریشه، وارد نمایید. با تایپ دستور quit از کنسول خارج شده و به پوسته فرمان باز خواهید گشت. توجه داشته باشید که در پایان تمامی دستوراتی که در کنسول MySQL وارد می کنید، باید علامت سمی کالن یا «;» را قرار دهید. اکنون مجددا سعی می کنیم تا با دستور قبل به سرویس دهنده متصل شویم:
# mysql -u root
ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO )
همانطور که مشاهده می کنید، این بار دیگر امکان دسترسی به سرویس دهنده، بدون استفاده از کلمه عبور وجود ندارد. برای اینکه سرویس دهنده هنگام ورود از ما تقاضای کلمه عبور نماید، گزینه p - را به دستور فوق اضافه می کنیم. به مثال زیر توجه کنید:
# mysql -u root -p
Enter password :
این امکان وجود دارد تا کلمه عبور خود را بلافاصله و چسبیده به گزینه p - برای سرویس دهنده ارسال کنید. فقط در این صورت، کلمه عبور بر روی صفحه نمایش قابل مشاهده خواهد بود که انجام این کار را از نظر امنیتی توصیه نمی کنم.
آشنایی بیشتر با کنسول MySQL
کنسول MySQL خود دارای تعدادی فرمان داخلی می باشد که از آنها برای امور مدیریتی خود استفاده خواهید کرد. با تایپ دستور help در این کنسول، لیستی از این فرامین نمایش داده خواهد شد. به نمونه زیر توجه کنید:
mysql> help
For the complete MySQL Manual online visit :
http://www.mysql.com/documentation
For info on technical support from MySQL developers visit :
http://www.mysql.com/support
For info on MySQL books, utilities, consultants, etc. visit :
http://www.mysql.com/portal
List of all MySQL commands :
(Commands must appear first on line and end with ';' )
help (h) Display this help .
? (?) Synonym for `help '.
clear (c) Clear command .
connect (r) Reconnect to the server. Optional arguments are db and host .
edit (e) Edit command with $EDITOR .
ego (G) Send command to mysql server, display result vertically .
exit (q) Exit mysql. Same as quit .
go (g) Send command to mysql server .
nopager (n) Disable pager, print to stdout .
notee (t) Don't write into outfile .
pager (P) Set PAGER [to_pager]. Print the query results via PAGER .
print (p) Print current command .
prompt (R) Change your mysql prompt .
quit (q) Quit mysql .
rehash (#) Rebuild completion hash .
source (.) Execute a SQL script file. Takes a file name as an argument .
status (s) Get status information from the server .
system (!) Execute a system shell command .
tee (T) Set outfile. Append everything into given outfile .
use (u) Use another database. Takes database name as argument .
Connection id: 812 (Can be used with mysqladmin kill)
mysql >
دستورات مهم عبارتند از:
exit و quit برای خروج از اعلان فرمان MySQL .
system برای اجرای دستورات سیستمی و خط فرمان از داخل اعلان MySQL ,
use برای تغییر بانک اطلاعاتی قابل استفاده و فعال که فرامین SQL بر روی آن اجرا خواهد شد. برای مثال use test بانک اطلاعاتی test را آماده دریافت دستورات خواهد کرد.
دستورات دیگری را که در کنسول MySQL می توانید وارد کنید، دستورات زبان SQL می باشد. برای این منظور باید با این زبان آشنا باشید. در زیر چند مثال نمایش داده شده است:
برای ایجاد بانک های اطلاعاتی جدید:
mysql> create database mydatabase ;
برای ایجاد کاربران جدید و دادن مجوز بر روی یک بانک اطلاعاتی:
mysql> grant all privileges on mydatabase.* to user@localhost identified by 'password ';
برای نمایش بانک های اطلاعاتی موجود بر روی سیستم:
mysql> show databases ;
برای نمایش جداول موجود بر روی یک بانک اطلاعاتی خاص:
mysql> use mydatabase ;mysql> show tables ;
برای حذف یک بانک اطلاعاتی:
mysql> drop database mydatabase ;
برای حذف یک جدول موجود بر روی یک بانک اطلاعاتی خاص:
mysql> use mydatabase ;mysql> drop table mytable ;
برای حذف دسترسی یک کاربر بر روی یک بانک اطلاعاتی خاص:
mysql> revoke all privileges on mydatabase.* from user@localhost ;
همانند آنچه که در پوسته فرمان سیستم دیدید، کنسول MySQL نیز دستورات تایپ شده را در یک تاریخچه نگهداری می کند. با استفاده از کلیدهای مکان نما در این کنسول، می توانید بین این دستورات حرکت کرده و در صورت لزوم از آنها استفاده کنید.
علاوه بر کنسول MySQL ، دستوری نیز به نام mysqladmin وجود دارد که از آن می توانید برای امور مدیریتی مانند ایجاد بانک های اطلاعاتی، تنظیم مجوزهای دسترسی، تنظیم کلمات عبور و غیره استفاده کنید. برای اطلاعات دقیق تر می توانید به مستندات این دستور مراجعه کنید.
مدیریت سرویس دهنده MySQL
برای راه اندازی و توقف سرویس دهنده MySQL خود در مواقع لزوم می توانید از دستور زیر استفاده کنید. گزینه start برای راه اندازی، گزینه stop برای توقف و گزینه restart جهت راه اندازی مجدد سرویس دهنده بکار می روند:
# /etc/init.d/mysql
Usage: /etc/init.d/mysql start|stop|restart|reload|force-reload
# /etc/init.d/mysql start
Starting MySQL database server: mysqld .
Checking for crashed MySQL tables in the background .
کلیه فرامینی که در سرویس دهنده MySQL اجرا می شوند، در یک فایل ثبت رخداد به نام mysql.log که در مسیر var/log/mysql / قرار دارد، ثبت می شوند. بنابراین در مواقع لزوم می توانید این فایل را زیر نظر داشته باشید.